The structure and progressive method of developing a software product is known as a software development process or a software development life-cycle. Several models exist for such processes, each with its own methodologies for approaches to tasks, activities and personal that exist and take place during the process of development. For example, a software development team may choose to utilize a waterfall model, spiral modal, iterative or incremental model, agile methods or rapid development. Many models exist because project management can be difficult, and without effective project management, developing software can become uncontrollable, get off track and end up being delivered late, over budget, and/or with a lot of bugs or issues to fix. Software developers therefore always need a way to effectively manage the process of development to meet user expectations in terms of functionality, cost, and delivery schedules. Whenever software fails to meet these expectations, it is often a cause of ineffective process management rather than ineffective software developers or programmers.
One of the more recent trends in these methods of software development is the Agile software development method. This method is a variant of an iterative and incremental development type strategy where requirements and solutions are created through collaboration of the software development team via self-organizing and cross-functional teams. The Agile software development method is aptly named for its promotion of agile adaptive planning and flexible response to changes in requirements. The Agile method breaks tasks into small incremental steps made with minimal planning. Iterations of the software are produced in short time frames as well, typically lasting only one to four weeks. Each iteration generally involves minimal planning, requirements, design, programming, and testing. At the end of each iteration, a working product is demonstrated, which allows for short incremental steps on a working product. These small workable steps minimize the risk involved in each change or step and allows the project to easily adapt to new requirements or issues that pop up during development, even when such changes are made late in the development process. Although each iteration does not particularly add much functionality to warrant a new release, the method does provide a workable release with minimal issues at the end of each iteration.
The Agile method also promotes face-to-face interaction amongst the software development team and often management as well. Such interaction generally takes place amongst teams at the same location, often even in the same room or bullpen, to further promote the ability to collaborate, change as needed and adapt to those changes or issues that arise. For example, a popular agile process involves a Daily Standup in which each member of the team goes over their current or upcoming tasks and updates the team on the progress. This standup and other interaction often includes the use of sticky notes, where each task is listed on a sticky note and moved along the board as the task goes through the process to completion. Similarly, white boards or other bullet boards can be used to track tasks. As great as these physical representations are for collaborative efforts, these physical representations are ineffective for management often requiring duplicative effort for management to audit the board, create status reports, to track history and of course such physical representations are difficult to send to remote team members or remote team locations. Daily contact, communication, and management of such agile processes are strained by the inability to effectively coordinate larger or geographically distant teams that cannot easily incorporate the collaborative spirit of the agile process and methods. Thus such physical collaboration and interaction is complicated by larger or distant teams that cannot all be in the same location.
Throughout the years, project management tools that have been created to more effectively organize and document the software development process. Specifically, in more recent years project management tools have been designed to aid developers using the agile method (as well as other methods) and to help larger and geographically distant teams interact over a network or the internet. For the sake of collaboration, consistency and effectiveness, such a management tool would actually require the consolidating and facilitating of project management, product management, customer management, programmers, testers, etc., into a single environment or management tool. The reality is, however, that currently several management tools are utilized by the manager, programmer or tester to accommodate their individual needs and no common management tool is used to accommodate everyone's needs throughout the development process. Further still, different teams at different locations may choose to utilize different management tools that they are more familiar with or better suit their needs, which further complicate the overall management process of software development. For example, numerous tools are available, some including RTC, HP Quality Center (QC), Service Manager, Clear Case (CC), Sonar, PPMC, Jira, Fitness, Cucumber, GitHub, Jenkins, Evolven, Clarity, Visio or even Excel or Access to track the development process. Many of these tools lack an overall management capability and are only designed for a particular part or person in the development process. For example, RTC tracks projects, work items, stories, tasks, releases, iterations, and signoffs, whereas QC tracks test plans, test cases, test executions, defects, and root causes of defects. Likewise, Clear Case may track only the source code or Sonar only tracks the build and the code quality metrics. Service Manager instead tracks release tickets, change tickets, incidents reports, and overall problems. Other tools like CMDB track application registries, product lines, products, databases and servers, and Project Team tracks project team attributes, personnel, business deliverables, and product alignment. On more of the management side, PPMC/Financials tracks project resources and project financials. Thus each of these tools does not have an overall management capability and are designed for specific parts of the development process.
As a more detailed example, many delivery teams use RTC for planning and execution of software design and development. Unfortunately, RTC lacks useful planning and tracking capabilities forcing teams to employ different tools and techniques outside of RTC adding unnecessary effort and complexity. These, extra tools unfortunately leads to duplicative work, difficult oversight, inefficiency and can create a separation of information that should be viewed together or collaboratively amongst the various parts of the team. Further still, these independent management tools are not designed to interact and are composed of unique data modules that are not compatible with one another making it difficult to take the data from one tool to another. Again, this incompatibility leads to duplicative work, difficult oversight, inefficiency and can create a separation of information.
Although some tools offer suites of management tools that interact, it can be difficult to get teams and/or data to migrate to a different tool or suite of tools, because people are creatures of habit and often managers, programmers, testers, etc. in the software development process often get familiar or comfortable with certain tools making it hard and unlikely for personnel to adjust. Often this leaves such new tools unused and thus ineffective. Additionally, these suits are incapable of interacting with other third party tools. The inability to effectively manage the plurality of software development tools utilized across the development process, across various development teams, across various development tools and across geographically disperse locations not only interferes with the collaborative style of the agile process but also breaks down the necessary oversight essential to effective project management via any software development methodology.
Another difficulty with managing development and releases of products (e.g., software) across teams is related to releasing products into a common environment where the product releases are from multiple independent teams. For example, in Agile systems that espouse smaller, quicker, and more incremental changes to be built by independent teams, the teams are not always synchronized with one another, and one team can schedule to release a product at a time that effects the scheduled release of another's team product. For example, Team A can schedule on day 1 a product release that causes changes to databases X. In order to change database X; databases Y, and Z must also be modified. Team B can schedule on Day 1 a product release that causes changes to database Z. Currently, when Team B schedules the release to change database Z, Team B likely can only see that database X has scheduled changes on Day 1, and thus thinks that no collision can occur. Therefore, it is desirable to provide managers scheduling product releases into a common environment with accurate information regarding the likelihood of success of their release.